// 用来缓存 对话框数据。
function NW05_tcc_cs(bd, fq) {
    this.fq = fq;                   //父亲容器。即，对话框是 fq的儿子

    this.geli = false;              //隔离。 真值=表示内容区嵌入一个iframe; 假值=不嵌入iframe

    //本地有关配置
    this.juese = bd;//表示页面里面，哪个节点（id）是本弹出层【配置】。
    this.juese_tb = 'tb';
    this.juese_st = 'st';
    this.juese_jb = 'jb';

    //远程（ajax）有关配置 通过方向地址，取得数据。
    this.yc_dizhi = null;    //当 this.geli 为真值时，此地址将被用于iframe src中。
    this.yc_wffs = 'get';    //请求-访问方式
    this.yc_cs = null;      //对象方式 比如：{参数1:1213,参数2:222}

    this.yc_sjgs = 'json';  //请求到的【数据格式】
    this.yc_nr_tb = 'tb';   //远程请示的数据，如果是json格式，通过 【 json对象.tb 】得取 标题数据
    this.yc_nr_st = 'st';   //远程请示的数据，如果是json格式，通过 【 json对象.st 】得取 标题数据
    this.yc_nr_jb = 'jb';   //远程请示的数据，如果是json格式，通过 【 json对象.jb 】得取 标题数据

    //当展开 遮挡层时（与父同尺寸），wz表示 内容层的位置
    //当没有展开遮挡(与内容层同尺寸)，wz表示 遮挡层的位置 
    this.wz = 'zzj';                 //位置：zzj表示正中间
    // 默认的高、宽。
    // 1）当展开遮挡层时，默认内容层的尺寸
    // 2）没展示遮挡层时，默认遮挡层的尺寸。而内容层则为 自动与父（遮挡层）同尺寸。
    this.g = '500px';
    this.k = '350px';


    this.zdh = 1;//最大化： 真值=最大化；假值=指定高宽。
    //启用弹出层时，就就隐藏。默认不隐藏。
    this.qd_yc = false;

    //部件
    this.an_gb = 1;     //真值=显示【按钮-关闭】，假值=隐藏【按钮-关闭】
    this.an_zdh = 1;    //真值=显示【按钮-最大化】，假值=隐藏【按钮-最大化】

    //遮挡层
    this.zdc = 1;                               //用户的配置。 遮挡层： 真值=启用遮挡层；假值=与内容层 同尺寸
    this.zdc_dw = 'gddw';                       //定位：固定定位 gddw； 相对定位 xddw
    this.zdc_bjys = 'rgb(255, 244, 244)'        //遮挡层颜色
    this.zdc_sj = 'tcc_gb';                     //点击遮挡层时，会发生什么事件

    // 等待层
    this.ddc_bjys = '#FFCCFF'
    this.ddc_nr = "<div xddw='zzj'>正在加载...</div>"

    //头部
    this.tb_g = '35px';                     //默认高
    this.tb_bjys = 'rgb(227, 189, 245)'     //默认背景颜色
    this.tb_nr = '';     //内容
    this.tb_pdJZ = 0;    //判断居中。真值=居中；假值=默认（不理）
    this.tb_xs = 1;     //显示。 真值=显示；假值=隐藏
    this.tb_djs = 0;//是否在头部显示倒计时。默认否

    //身体
    this.st_bjys = 'rgb(243, 217, 255)';
    this.st_nr = ''//内容
    this.st_yq = false;//开启内容的引擎。 true=对内容里面的节点，进行布局、定位；false=不动内容里面的东西。

    //脚部
    this.jb_g = '35px';
    this.jb_bjys = 'rgb(220, 159, 248)';
    this.jb_nr = '';     //内容
    this.jb_xs = 1;     //显示。 真值=显示；假值=隐藏

    //事件
    //关闭、最大化.........等等事件触发后，都会调用这个函数（如果存在）。并传入 弹出层对象。
    //用户的方法返回 true时，会继续执行事件。返回false时，会停止执行事件。
    //如果用户需要到远程服务器拿资源后，才可以关闭容器，可以先返回false，阻止窗口关闭。等自己拿到服务器资源后，再自行调用对象，手动关闭。
    this.sj = null;

    //请求网址时，附上随机参数
    this.sjcs_ming = '____d'
    this.sjcs = true;
}

//__对外部约定的方法名。以两个下划线开头
NW05_tcc_cs.prototype.__hqCSlx = function (sxMing) {
    switch (sxMing) {
        case 'qd_yc':
        case 'geli':        //隔离。 真值=表示内容区嵌入一个iframe; 假值=不嵌入iframe
        case 'zdh':         //最大化： 真值=最大化；假值=指定高宽。
        case 'an_gb':       //真值=显示【按钮-关闭】，假值=隐藏【按钮-关闭】
        case 'an_zdh':      //真值=显示【按钮-最大化】，假值=隐藏【按钮-最大化】
        case 'zdc':         //用户的配置。 遮挡层： 真值=启用遮挡层；假值=与内容层 同尺寸
        case 'tb_pdJZ':     //判断居中。真值=居中；假值=默认（不理）
        case 'tb_xs':       //显示。 真值=显示；假值=隐藏
        case 'st_yq':       //开启内容的引擎。 true=对内容里面的节点，进行布局、定位；false=不动内容里面的东西。
        case 'jb_xs':       //显示。 真值=显示；假值=隐藏
        case 'sjcs':        //请求网址时，附上随机参数 。true=启用随机参数。参数名通过 sjcs_ming指定。
            return 'boolean';

        case 'juese':
        case 'juese_tb':
        case 'juese_st':
        case 'juese_jb':
        //远程（ajax）有关配置 通过方向地址，取得数据。
        case 'yc_dizhi':     //当 this.geli 为真值时，此地址将被用于iframe src中。
        case 'yc_wffs':    //请求-访问方式
        case 'yc_sjgs':  //请求到的【数据格式】
        case 'yc_nr_tb':   //远程请示的数据，如果是json格式，通过 【 json对象.tb 】得取 标题数据
        case 'yc_nr_st':   //远程请示的数据，如果是json格式，通过 【 json对象.st 】得取 标题数据
        case 'yc_nr_jb':   //远程请示的数据，如果是json格式，通过 【 json对象.jb 】得取 标题数据
        case 'wz':               //位置：zzj表示正中间
        case 'g':
        case 'k':
        case 'zdc_dw':                      //定位：固定定位 gddw； 相对定位 xddw
        case 'zdc_bjys':                    //遮挡层颜色
        case 'zdc_sj':                      //点击遮挡层时，会发生什么事件
        // 等待层
        case 'ddc_bjys':
        case 'ddc_nr':
        //头部
        case 'tb_g':                    //默认高
        case 'tb_bjys':     //默认背景颜色
        case 'tb_nr':     //内容
        //身体
        case 'st_bjys':
        case 'st_nr':
        //脚部
        case 'jb_g':
        case 'jb_bjys':
        case 'jb_nr':     //内容
        //随机参数
        case 'sjcs_ming': //请求网址时，附上随机参数。 true=启用随机参数。参数名通过 sjcs_ming指定。
            return 'string';
        //事件
        case 'sj':
            return 'function';

        case 'yc_cs':      //对象方式 比如：{参数1:1213,参数2:222}
            return 'object';
    }
}

NW05_tcc_cs.prototype.qd0 = function () {
    this._zb_zhi();
    this._zb_nwJD();
    if (this.sj && typeof this.sj == 'string') {
        try {
            this.sj = eval(this.sj);//取nw_jx空间地址
        } catch (e) {
            console.error('你在【弹出层-参数】对象里面，配置了不存在的函数名：' + this.sj)
            this.sj = null;
        }
    }
}

NW05_tcc_cs.prototype._zb_zhi = function () {
    this.g = this._ngj_gshGK(this.g)
    this.k = this._ngj_gshGK(this.k)
    this.tb_g = this._ngj_gshGK(this.tb_g)
    this.jb_g = this._ngj_gshGK(this.jb_g)
}

/**
 * 如果值为数字，自动附加px单位；
 * 如果值为假值，自动附上【默认值】
 * 
 * @param {文本|数字} zhi 值
 * @param {未知} mrZhi 默认值
 */
NW05_tcc_cs.prototype._ngj_gshGK = function (zhi) {
    if (typeof zhi == 'number') {
        return zhi + 'px'
    } else {
        return zhi
    }
}

//1、准备阶段-父容器
NW05_tcc_cs.prototype._zb_nwJD = function () {
    if (!this.fq) {//没有指定父容器。默认是 body容器
        this.fq = nw.st;
    }
    else if (typeof this.fq == 'string' || !this.fq.Jiedian) {
        this.fq = nw.cj(this.fq)
    }

    if (this.fq != nw.st) {
        this.zdc_dw = 'xddw'//相对定位
    }
}
